unsigned long ticks = 0;
long sec_diff;
- retry:
- __get_time_values_from_xen();
+ do {
+ __get_time_values_from_xen();
+
+ delta = (s64)(shadow_system_time +
+ (__get_time_delta_usecs() * 1000) -
+ processed_system_time);
+ }
+ while ( !TIME_VALUES_UP_TO_DATE );
- if ( (delta = (s64)(shadow_system_time + __get_time_delta_usecs() * 1000 -
- processed_system_time)) < 0 )
+ if ( unlikely(delta < 0) )
{
- if (!TIME_VALUES_UP_TO_DATE)
- goto retry;
printk("Timer ISR: Time went backwards: %lld\n", delta);
return;
}
s64 delta, nsec;
long sec_diff, wtm_nsec;
- retry:
- __get_time_values_from_xen();
+ do {
+ __get_time_values_from_xen();
+
+ delta = (s64)(shadow_system_time +
+ (cur_timer->get_offset() * NSEC_PER_USEC) -
+ processed_system_time);
+ }
+ while (!TIME_VALUES_UP_TO_DATE);
- delta = (s64)(shadow_system_time +
- (cur_timer->get_offset() * NSEC_PER_USEC) -
- processed_system_time);
- if (delta < 0) {
- if (!TIME_VALUES_UP_TO_DATE)
- goto retry;
+ if (unlikely(delta < 0)) {
printk("Timer ISR: Time went backwards: %lld %lld %ld %lld\n",
delta, shadow_system_time,
(cur_timer->get_offset() * NSEC_PER_USEC),